//  解题思路： 我的思路是比较list1 和 list2 的第一个值，选择一条链表再比较太麻烦
//  正确解题思路： 使用ListNode构造函数，来进行创建新的链表，按如下规则进行操作：
//                  while(l1 != null & l2 != null) 进行循环，结束条件的l1 != null 或 l2 != null。 因为当找到的时候已经自动l1 = l1.next  l2 = l2.next
//                  其次用链表 l1st1.val 和 list2.val 比较，谁小就相应的 prev(创建的新链表的指针).next = min(l1st1.val,list2.val) 并将其对应指针后移l1 = l1.next  l2 = l2.next
//                  结束循环后，会出现一个链表的指针指向空的状态，此处只要 prev.next 指向另外一个不为空的节点就可以完成操作了



/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */

function ListNode(val, next) {
      this.val = (val===undefined ? 0 : val)
      this.next = (next===undefined ? null : next)
 }
 var mergeTwoLists = function(list1, list2) {
    let prevhead = new ListNode(-1);
    let prev = prevhead; // 作为新建链表头节点

    let l1 = list1; // 作为list1链表指针
    let l2 = list2; // 作为list2链表指针

    while(l1 != null & l2 != null){
        if(l1.val <= l2.val){
            prev.next = l1;
            l1 = l1.next;
        }else{
            prev.next = l2;
            l2 = l2.next;
        }
        prev = prev.next;
    }

    prev.next = l1  === null ? l2 :l1; //  l1 === null ? l2 : l1   再进行赋值 

    return prevhead.next;


};